One problem that is common to many data communications technologies is the corruption of data due to noise. The signal-to-noise ratio (SNR) for a communications channel is an indication of the quality of the communications carried out over that channel, as it conveys the relative strength of the signal that carries the data (as attenuated over distance and time) to the noise present on that channel. These factors relate directly to the likelihood that a data bit or symbol received over the channel is in error relative to the data bit or symbol as transmitted. This likelihood is reflected by the error probability for the communications over the channel, commonly expressed as the Bit Error Rate (BER) which is a ratio of bits that are received and decoded in error to total bits transmitted. In general, the likelihood of error in data communications should be considered in developing a communications technology. Techniques for detecting and correcting errors in the communicated data should be incorporated for the communications technology to be useful.
To this end, error detection and correction techniques are implemented through the use of redundant coding of the data. In general, redundant coding comprises inserting data bits into the transmitted data stream that do not add any additional information, but that indicate whether an error is present in the received data stream. More complex codes provide the ability to deduce the true transmitted data from a received data stream, despite the presence of errors.
One class of redundant codes is the Low Density Parity Check (LDPC) code, described in further detail below. Among others, one technique that may be used to decode LDPC codes is layered decoding, wherein multiple rows of a parity check matrix are grouped together into layers, and these layers are processed in successive order. Various decoding architectures may be used to decode in layers a particular type of LDPC code. However, these decoding architectures are inflexible in that the architectures generally are able to decode only one or a few types of LDPC codes.